//这里是对axios进行二次封装
import axios from 'axios';
//引入store
import store from '@/store'
//引入进度条
import nprogress from 'nprogress';
//引入进度条的样式
import 'nprogress/nprogress.css';
//start 进度条开始 done: 进度条结束
//1: 利用axios对象的方法create,去创建一个axios实例
//2: request就是axios,需要配置议一下
const requests = axios.create({
    //配置对象
    //基础路径,发请求时路径会出现
    baseURL:"/api",
    //请求超时时间
    timeout:5000,

}) 
//请求拦截器 请求时做点事情
requests.interceptors.request.use((config) => { 
    //config 配置对象 里面有个重要的属性 headers
    //加一个临时游客身份 uuid
    if(store.state.detail.uuid_token){
        //请求头添加一个字段(userTempId):和后台老师商量好了
        config.headers.userTempId = store.state.detail.uuid_token;
      }
    //需要携带token带给服务器
  if(store.state.user.token){
    config.headers.token = store.state.user.token;
  }
    //进度条开始
    nprogress.start();
    return config;

 })
//响应拦截器 
requests.interceptors.response.use((res) => { 
    //成功回调 res里面重要的就是data,只需要返回data
    nprogress.done();
    return res.data;

 // eslint-disable-next-line no-unused-vars
 },(error) => { 
    //响应失败的回调函数 使用promiese的方法reject返回错误信息
    return Promise.reject(new Error('failed'));
  }
 )
export default requests;